Apache Flink-এ Managed State এবং Keyed State হলো স্টেটফুল স্ট্রিম প্রসেসিংয়ের দুটি গুরুত্বপূর্ণ ধারণা, যা ডেটা প্রক্রিয়াকরণে স্টেট (অর্থাৎ, তথ্য বা মান) সংরক্ষণ এবং ব্যবহারকে সহজ করে তোলে। Flink একটি ডিস্ট্রিবিউটেড স্ট্রিম প্রসেসিং ফ্রেমওয়ার্ক যা উচ্চমাত্রার পারফরম্যান্স এবং ফ্লেক্সিবিলিটি বজায় রেখে স্টেট পরিচালনা করতে সক্ষম।
Managed State হলো সেই স্টেট যা Flink নিজেই ম্যানেজ করে। Flink-এর Managed State দুটি ভাগে বিভক্ত:
Managed State ব্যবহারের মাধ্যমে Flink স্বয়ংক্রিয়ভাবে স্টেট সংরক্ষণ, পুনরুদ্ধার, এবং ব্যাকআপ (checkpointing) করে, যাতে কোনো ফেইলওভারের পরেও ডেটা এবং প্রসেসিং পুনরায় শুরু করা যায়।
Keyed State হলো একটি বিশেষ ধরনের Managed State যা keyBy()
অপারেশন ব্যবহারের মাধ্যমে স্ট্রিমকে কী-ভিত্তিক ভাগ করার পর ব্যবহৃত হয়। এটি প্রতিটি কী-ভিত্তিক পার্টিশনের সাথে সম্পর্কিত স্টেট সংরক্ষণ করতে ব্যবহৃত হয়। যখন স্ট্রিম একটি কী দ্বারা ভাগ করা হয়, তখন প্রতিটি কী-এর জন্য Flink আলাদা আলাদা স্টেট তৈরি করে এবং এটি শুধুমাত্র সেই কী-এর ডেটা প্রক্রিয়াকরণে ব্যবহৃত হয়।
Keyed State-এর কয়েকটি ধরন:
Keyed State ব্যবহারের উদাহরণ:
public class CountWithKeyedState extends KeyedProcessFunction<String, String, Tuple2<String, Integer>> {
private ValueState<Integer> countState;
@Override
public void open(Configuration parameters) {
ValueStateDescriptor<Integer> descriptor = new ValueStateDescriptor<>(
"countState",
Integer.class
);
countState = getRuntimeContext().getState(descriptor);
}
@Override
public void processElement(String value, Context ctx, Collector<Tuple2<String, Integer>> out) throws Exception {
Integer currentCount = countState.value();
if (currentCount == null) {
currentCount = 0;
}
currentCount += 1;
countState.update(currentCount);
out.collect(new Tuple2<>(ctx.getCurrentKey(), currentCount));
}
}
বর্ণনা: এখানে প্রতিটি কী-এর জন্য একটি কাউন্ট স্টেট রাখা হচ্ছে যা প্রতিটি ইনপুট ইভেন্টের সাথে আপডেট হয়।
Apache Flink-এ Managed State এবং Keyed State ডেটা স্ট্রিম প্রসেসিং-এর ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। Managed State স্বয়ংক্রিয় স্টেট ম্যানেজমেন্ট ও ফেইলওভার হ্যান্ডলিং নিশ্চিত করে, যেখানে Keyed State কী-ভিত্তিক স্টেট সংরক্ষণ এবং প্রসেসিংয়ের সুযোগ প্রদান করে, যা বড় আকারের ডেটা প্রসেসিং ও কমপ্লেক্স স্ট্রিমিং অপারেশন পরিচালনা করতে সহায়ক।
আরও দেখুন...